### FILE="Main.annotation"
# Copyright:    Public domain.
# Filename:	SYSTEM_TEST_STANDARD_LEAD_INS.agc
# Purpose:      Part of the source code for Colossus build 237.
#               This is for the Command Module's (CM) Apollo Guidance
#               Computer (AGC), we believe for Apollo 8.
# Assembler:    yaYUL
# Contact:      Jim Lawton <jim DOT lawton AT gmail DOT com>
# Website:      www.ibiblio.org/apollo/index.html
# Page scans:   www.ibiblio.org/apollo/ScansForConversion/Colossus237/
# Mod history:  2011-01-27 JL   Adapted from corresponding Colossus 249 file.

## Page 411
		EBANK=	XSM

		BANK	33
		SETLOC	E/PROG
		BANK

		COUNT*	$$/P07

# 	   SPECIAL PROGRAMS TO EASE THE PANGS OF ERASABLE MEMORY PROGRAMS.

# E/BKCALL   FOR DOING BANKCALLS FROM AND RETURNING TO ERASABLE.

# 	   THIS ROUTINE IS CALLABLE FROM ERASABLE OR FIXED.  LIKE BANKCALL, HOWEVER, SWITCHING BETWEEN S3 AND S4
# IS NOT POSSIBLE.

# 	   THE CALLING SEQUENCE IS:

#						   TC     BANKCALL
#						   CADR   E/BKCALL
#						   CADR   ROUTINE         WHERE YOO WANT TO GO IN FIXED.
#						   RETURN HERE FROM DISPLAY TERMINATE, BAD STALL OR TC Q.
#						   RETURN HERE FROM DISPLAY PROCEED OR GOOD RETURN FROM STALL.
#						   RETURN HERE FROM DISPLAY ENTER OR RECYCLE.

# 	   THIS ROUTINE REQUIRES TWO ERASABLES (EBUF2, +1) IN UNSWITCHED WHICH ARE UNSHARED BY INTERRUPTS AND
# OTHER EMEMORY PROGRAMS.

# 	   A + L ARE PRESERVED THROUGH BANKCALL AND E/BKCALL.

E/BKCALL	DXCH	BUF2		# SAVE A,L AND GET DP RETURN
		DXCH	EBUF2		# SAVE DP RETURN.
		INCR	EBUF2		# RETURN +1 BECAUSE DOUBLE CADR.
		CA	BBANK
		MASK	LOW10		# GET CURRENT EBANK.  (SBANK SOMEDAY)
		ADS	EBUF2 +1	# FORM BBCON.  (WAS FBANK)
		NDX	EBUF2
		CA	0 -1		# GET CADR OF ROUTINE.
		TC	SWCALL		# GO TO ROUTINE, SETTING Q TO SWRETURN
#					  AND RESTORING A + L.
		TC	+4		# TX Q, V34, OR BAD STALL RETURN.
		TC	+2		# PROCEED OR GOOD STALL RETURN.
		INCR	EBUF2		# ENTER OR RECYCLE RETURN.
		INCR	EBUF2
E/SWITCH	DXCH	EBUF2
		DTCB

## Page 412
# E/CALL	  FOR CALLING A FIXED MEMORY INTERPRETIVE SUBROUTINE FROM ERASABLE AND RETURNING TO ERASABLE.

# 	   THE CALLING SEQUENCE IS...
#						   RTB
#							  E/CALL
#						   CADR	  ROUTINE	  THE INTERPRETIVE SUBROUTINE YOU WANT.
#									  RETURNS HERE IN INTERPRETIVE.

E/CALL		LXCH	LOC		# ADRES -1 OF CADR.
		INDEX	L
		CA	L		# CADR IN A.
		INCR	L
		INCR	L		# RETURN ADRES IN L.
		DXCH	EBUF2		# STORE CADR AND RETURN.
		TC	INTPRET
		CALL
			EBUF2		# INDIRECTLY EXECUTE ROUTINE.  IT MUST
		EXIT			# LEAVE VIA RVQ OR EQUIVALENT.
		LXCH	EBUF2 +1	# PICK UP RETURN.
		TCF	INTPRET +2	# SET LOC AND RETURN TO CALLER.

## Page 413
# E/JOBWAK	  FOR WAKING UP ERASABLE MEMORY JOBS.

# 	   THIS ROUTINE MUST BE CALLED IN INTERRUPT OR WITH INTERRUPTS INHIBITED.

# 	   THE CALLING SEQUENCE IS:

#						   INHINT
#						     .
#						     .
#						   CA     WAKEADR	  ADDRESS OF SLEEPING JOB
#						   TC     IBNKCALL
#						   CADR   E/JOBWAK
#						     .			  RETURNS HERE
#						     .
#						     .
#						   RELINT		  IF YOU DID AND INHINT.

		BANK	33
		SETLOC	E/PROG
		BANK

		COUNT*	 $$/P07

E/JOBWAK	TC	JOBWAKE		# ARRIVE WITH ADRES IN A.
		CS	BIT11
		NDX	LOCCTR
		ADS	LOC		# KNOCK FIXED MEMORY BIT OUT OF ADRES.
		TC	RUPTREG3	# RETURN


# THESE PROGRAMS ARE PROVIDED TO ALLOW OVERLAY OF BANKS 30 THRU 33 OF THE 205 VERSIONS OF SYSTEM TESTS AND
# PRELAUNCH ALIGN.  THE INTENT IS TO ALLOW THE STG AND HYBRID LABS TO RUN ALL THE TESTS WITH COLOSSUS.


		BANK	33
		SETLOC	TESTLEAD
		BANK

		COUNT	33/COMST

		EBANK=	QPLACE

COMPVER		TC	GCOMPVER	# MUST BE 33,2000.

GTSCPSS1	TC	GTSCPSS		# MUST BE AT 33,2001

REDO		TC	NEWMODEX	# DISPLAY MM 07.
		MM	07		# FALL INTO IMUTEST
